
using System;
using Core.Base;
using Core.Contracts.Enums;
using Core.Contracts.Interfaces;
using Core.Extensions;
using Core.Features;
using Core.Resources;

namespace Core.Items.Robots
{
    /// <summary>
    /// Seth mk2 robot class
    /// </summary>
    
    public sealed class SethMk2 : RobotBase
    {
        /// <summary>
        /// Create a new instance of the <see cref="T:Core.Items.Robots.SethMk2"/> class.
        /// </summary>
        public SethMk2()
            : base(
            "Seth Mk2",
            Traduction.desc_seth,
            FactionsEnum.Thelodica,
            RobotTechnologyLevel.Mk2,
            RobotSizesEnum.HeavyMech,
            new ISlot[]{ 
				new Slot(0, SlotGroupsEnum.Chassis, SlotTypesEnum.Turret|SlotTypesEnum.Misc|SlotTypesEnum.Industrial, SizesEnum.Small|SizesEnum.Medium),
				new Slot(1, SlotGroupsEnum.Chassis, SlotTypesEnum.Turret, SizesEnum.Small|SizesEnum.Medium),
				new Slot(2, SlotGroupsEnum.Chassis, SlotTypesEnum.Turret|SlotTypesEnum.Misc, SizesEnum.Small|SizesEnum.Medium),
				new Slot(3, SlotGroupsEnum.Chassis, SlotTypesEnum.Turret|SlotTypesEnum.Misc|SlotTypesEnum.Industrial, SizesEnum.Small|SizesEnum.Medium),
				new Slot(4, SlotGroupsEnum.Chassis, SlotTypesEnum.Turret, SizesEnum.Small|SizesEnum.Medium),
				new Slot(5, SlotGroupsEnum.Chassis, SlotTypesEnum.Turret|SlotTypesEnum.Misc, SizesEnum.Small|SizesEnum.Medium),
				new Slot(SlotGroupsEnum.Head, SlotTypesEnum.Modules),
				new Slot(SlotGroupsEnum.Head, SlotTypesEnum.Modules),
				new Slot(SlotGroupsEnum.Head, SlotTypesEnum.Modules),
				new Slot(SlotGroupsEnum.Head, SlotTypesEnum.Modules),
				new Slot(SlotGroupsEnum.Head, SlotTypesEnum.Modules),
				new Slot(SlotGroupsEnum.Head, SlotTypesEnum.Modules),
				new Slot(SlotGroupsEnum.Legs, SlotTypesEnum.Modules),
				new Slot(SlotGroupsEnum.Legs, SlotTypesEnum.Modules),
				new Slot(SlotGroupsEnum.Legs, SlotTypesEnum.Modules),
				new Slot(SlotGroupsEnum.Legs, SlotTypesEnum.Modules),
				new Slot(SlotGroupsEnum.Legs, SlotTypesEnum.Modules),
				new Slot(SlotGroupsEnum.Legs, SlotTypesEnum.Modules), },
            new IFeature<object>[]{ 
				new AccumulatorCapacity<double>(4300),
				new AccumulatorRechargeTime<double>(720),
				new CpuPerformance<double>(315),
				new ReactorPerformance<double>(1375),
				new ArmorAmount<double>(3200),
				new ChemicalResistance<double>(30),
				new KineticResistance<double>(150),
				new SeismicResistance<double>(10),
				new ThermalResistance<double>(45),
				new SurfaceHitSize<double>(10.00),
				new InterferenceEmission<double>(6.00),
				new InterferenceMinimum<double>(90.00),
				new InterferencePeak<double>(405.00),
				new InterferenceRadius<double>(300.00),
				new LockingRange<double>(370),
				new LockingTime<double>(12.50),
				new MaximumTargets<double>(8),
				new MissileGuidanceFailure<double>(0.1),
				new SensorStrength<double>(85),
				new SignalDetection<double>(80.00),
				new SignalMasking<double>(80.00),
				new ReloadingTime<double>(10),
				new CargoCapacity<double>(12.00),
				new RobotMass<double>(36540.00),
				new SlopeCapacity<double>(45),
				new TopSpeed<double>(39.60),
				new Volume<double>(22.50), },
           new IBonusModifier[]{
                new BonusModifier<AdvancedRobotics>( FeatureTypesEnum.Robot, FeaturesEnum.CriticalHitChance, 0.01){ Unit = UnitsEnum.Percentage, DisplayName = "Critical hit chance"},
                new BonusModifier<AdvancedRobotics>( FeatureTypesEnum.Module, FeaturesEnum.MediumLaserDamage, 0.05){ Unit = UnitsEnum.Percentage, DisplayName = "Medium laser damage"},
                new BonusModifier<AdvancedRobotics>( FeatureTypesEnum.Robot, FeaturesEnum.AccumulatorCapacity, 0.05){ Unit = UnitsEnum.Percentage, DisplayName = "Accumulator capacity"},
                new BonusModifier<ThelodicaRobotControl>( FeatureTypesEnum.Module, FeaturesEnum.MediumLaserDamage, 0.01){ Unit = UnitsEnum.Percentage, DisplayName = "Medium laser damage"},
                new BonusModifier<ThelodicaRobotControl>( FeatureTypesEnum.Module, FeaturesEnum.SmallLaserDamage, 0.01){ Unit = UnitsEnum.Percentage, DisplayName = "Small laser damage"},
                new BonusModifier<ThelodicaRobotControl>( FeatureTypesEnum.Module, FeaturesEnum.MediumMagneticWeaponDamage, 0.01){ Unit = UnitsEnum.Percentage, DisplayName = "Medium magnetic weapon damage"},
                new BonusModifier<ThelodicaRobotControl>( FeatureTypesEnum.Module, FeaturesEnum.SmallMagneticWeaponDamage, 0.01){ Unit = UnitsEnum.Percentage, DisplayName = "Small magnetic weapon damage"},
                new BonusModifier<ThelodicaRobotControl>( FeatureTypesEnum.Module, FeaturesEnum.MediumFirearmDamage, 0.01){ Unit = UnitsEnum.Percentage, DisplayName = "Medium firearm damage"},
                new BonusModifier<ThelodicaRobotControl>( FeatureTypesEnum.Module, FeaturesEnum.SmallFirearmDamage, 0.01){ Unit = UnitsEnum.Percentage, DisplayName = "Small firearm damage"},
            },
            new ICondition<IExtension>[]
                {
                    new ExtensionCondition<AdvancedRobotics>(4), 
                    new ExtensionCondition<ThelodicaRobotControl>(10)
                })
        {
        }
    }
}